Synchronized data changes

ABSTRACT

A system and/or computer program product synchronizes data between a first computer and a second computer. An original first data in a first computer is changed into revised first data in the first computer by inserting a data change into the original first data. The data change in the revised first data is identified and transmitted to a second computer in a message. The message instructs the second computer to convert an original second data stored in the second computer into a revised second data by inserting the data change into the original second data, where the original second data and the revised second data are used and managed by a resident application software on the second computer. The message is executable without use of the resident application software on the second computer, thus allowing changes to be made across disparate platforms.

BACKGROUND

The present disclosure relates to the field of computing hardware, andspecifically to computer hardware used in storing and updating data.Still more specifically, the present disclosure relates to synchronizingupdated data between computer systems.

Computer systems utilize data as input and output from applicationprograms. This data may be stored in multiple computer systems. If achange is made to data in one computer system, making a similar changeto data in another computer system is referred to as datasynchronization between computer systems.

SUMMARY

In one embodiment, a system and/or computer program product synchronizesdata between a first computer and a second computer. An original firstdata in a first computer is changed into revised first data in the firstcomputer by inserting a data change into the original first data. Thedata change in the revised first data is identified and transmitted to asecond computer in a message. The message instructs the second computerto convert an original second data stored in the second computer into arevised second data by inserting the data change into the originalsecond data, where the second computer has a resident applicationsoftware that uses and manages the original second data and the revisedsecond data. The message is executable without use of the residentapplication software on the second computer, thus allowing changes to bemade across disparate platforms.

The above as well as additional objectives, features, and advantages ofthe present invention will become apparent in the following detailedwritten description.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The invention itself, as well as a preferred mode of use, furtherobjects, and advantages thereof, will best be understood by reference tothe following detailed description of an illustrative embodiment whenread in conjunction with the accompanying drawings, wherein:

FIG. 1 depicts an exemplary physical computer in which the presentinvention may be implemented and/or utilized;

FIG. 2 illustrates an exemplary system having a content server andclient computer in accordance with one embodiment of the presentinvention;

FIG. 3 is a high-level flow chart of one or more exemplary stepsperformed by one or more processors to minimize bandwidth usage whensynchronizing data between two computers; and

FIG. 4 depicts an exemplary multi-sensor content server.

DETAILED DESCRIPTION

With reference now to FIG. 1, there is depicted a block diagram of anexemplary computer 100, with which and/or in which the present inventionmay be utilized. Computer 100 includes a processor unit 104 that iscoupled to a system bus 106. A video adapter 108, which drives/supportsa display 110, is also coupled to system bus 106. System bus 106 iscoupled via a bus bridge 112 to an Input/Output (I/O) bus 114. An I/Ointerface 116 is coupled to I/O bus 114. I/O interface 116 affordscommunication with various I/O devices, including a keyboard 118, amouse 120, a Compact Disk-Read Only Memory (CD-ROM) drive 122, andsensors 126. The format of the ports connected to I/O interface 116 maybe any known to those skilled in the art of computer architecture,including but not limited to Universal Serial Bus (USB) ports.

Computer 100 is able to communicate with a service provider server 150,a client computer 152, and/or a data change server 154 via a network 128using a network interface 130, which is coupled to system bus 106.Network 128 may be an external network such as the Internet, or aninternal network such as an Ethernet or a Virtual Private Network (VPN).

A hard drive interface 132 is also coupled to system bus 106. Hard driveinterface 132 interfaces with a hard drive 134. In one embodiment, harddrive 134 populates a system memory 136, which is also coupled to systembus 106. System memory 136 is defined as a lowest level of volatilememory in computer 100. This volatile memory may include additionalhigher levels of volatile memory (not shown), including, but not limitedto, cache memory, registers, and buffers. Code that populates systemmemory 136 includes an operating system (OS) 138 and applicationprograms 144.

OS 138 includes a shell 140, for providing transparent user access toresources such as application programs 144. Generally, shell 140 (as itis called in UNIX®—UNIX is a registered trademark of The Open Group inthe United States and other countries), also called a command processorin Windows® (WINDOWS is a registered trademark of Microsoft Corporationin the United States and other countries), is a program that provides aninterpreter and an interface between the user and the operating system,and is generally the highest level of the operating system softwarehierarchy and serves as a command interpreter. Thus, shell 140 providesa system prompt, interprets commands entered by keyboard 118, mouse 120,or other user input media, and sends the interpreted command(s) to theappropriate lower levels of the operating system (e.g., kernel 142) forprocessing. As depicted, OS 138 also includes kernel 142, which includeslower levels of functionality for OS 138. Kernel 142 provides essentialservices required by other parts of OS 138 and application programs 144.The services provided by kernel 142 include memory management, processand task management, disk management, and I/O device management.

Application programs 144 include a browser 146. Browser 146 includesprogram modules and instructions enabling a World Wide Web (WWW) client(i.e., computer 100) to send and receive network messages to theInternet. Computer 100 may utilize HyperText Transfer Protocol (HTTP)messaging to enable communication with service provider server 150.Application programs 144 in system memory 136 also include a datasynchronization program (DSP) 148, which, in one embodiment, executesthe process described below in FIGS. 2-3. In one embodiment, computer100 is able to download DSP 148 from service provider server 150,preferably in an “on demand” basis.

The hardware elements depicted in computer 100 are not intended to beexhaustive, but rather are representative to highlight essentialcomponents required by the present invention. For instance, computer 100may include alternate memory storage devices such as magnetic cassettes,Digital Versatile Disks (DVDs), Bernoulli cartridges, and the like.These and other variations are intended to be within the spirit andscope of the present invention. Note that the hardware architecture forservice provider server 150 and/or client computer 152 and/or datachange server 154 may be substantially similar to that shown forcomputer 100.

Note further that computer 100 may be any type of computing device,including, but not limited to, a smart phone, a personal digitalassistant, a mobile or stationary monitoring device, etc.

Referring now to FIG. 2, an exemplary system 200 for synchronizing databetween two computers is presented. As depicted, a first computer (e.g.,content server 202) communicates with a second computer (e.g., clientcomputer 204) via a network 205 (which may be a peer-to-peer network, ahub-and-spoke network, etc.), analogous to the depiction of elements100, 152, and 128 shown in FIG. 1. Stored within content server 202 isan original first data 206, which may be a set of text data, numericaldata, audio data, video data, or any other type of data that isprocessable by a computer system. Using a process that may or may not beknown to content server 202, original first data 206 is changed into arevised first data 208 by inserting and/or substituting a data change212 into the original first data 206. For example, assume that originalfirst data has five blocks of data, which are identified by theirrespective addresses as data blocks A1-A5. If data block A2 is replacedwith a new data block A2′, the result is revised first data 208, whichis now made up of data blocks A1, A2′, A3, A4 and A5.

In one embodiment, which data block was changed is unknown to contentserver 202. Thus, a data revision determiner 210 (which may be part ofDSP 148 shown in FIG. 1) compares original first data 206 with revisedfirst data 208 in order to identify the new data block A2′, which is thedata change 212. Data revision determiner 210 is also able to identifythe location (i.e., address) at which the data change was made in theoriginal first data 206.

Content server 202 (using DSP 148 shown in FIG. 1) then generates andtransmits a message 214 to client computer 204. This message includesonly the data change 212 and any minimal logic (e.g., an address headerto identify the location of client computer 204 and instructions onwhere to insert the data change 212) needed to utilize the data change212. The data change 212 is then utilized by a data revision implementer216 to change an original second data 207 into a revised second data209. Note the following features of the operations enabled in the clientcomputer 204.

First, the data change 212 is directly installed into the originalsecond data 207 without interfacing with any type of database softwareat the client computer 204. That is, the message 214 contains allnecessary executable software (via whatever operating system is runningon the client computer 204) for inserting the data change 212 directlyinto the original second data 207, thus creating the revised second data209.

Second, the format/schema of the original first data 206 may bedisparate from the format/schema of the original second data 207. Forexample, the original first data 206 may be a set of data that areexecutable by a first application program (i.e., a first word processingprogram), while the original second data may be a set of data that areexecutable by a second application program (i.e., a second type of wordprocessing program). If these two data sets (elements 206/207) utilizedifferent schema/formats/etc., then data revision implementer 216converts the data change 212 into the appropriate format/schema beforeinserting the data change 212 into the original second data 207.

Third, the operating systems used by the content server 202 and theclient computer 204 may be disparate. In this embodiment, the message214 includes 1) the data change 212; and 2) instructions, which areexecutable under the operating system of the client computer 204, tolocate the position within the original second data 207 at which thedata change 212 is to be inserted.

Fourth, the present invention minimizes network bandwidth between thecontent server 202 and the client computer 204. That is, by acceptingthe premise that local disk and processor usage is cheap (in currency,time, performance) compared with network usage, changes to data arecommunicated by using local resources to determine what changes are madeto an entire data file, and then transmitting only these changes, ratherthan the entire data file, to another computer for synchronization.

Thus, the present invention does not require the content server 202 andthe client computer 204 to be running the same software (e.g., bothrunning a same database program) or even the same operating system.Rather, in the present invention the data changes are made by directlyaccessing the data in the client computer 204. Thus, the message 214sent to client computer 204 functions without interacting with anyresident application software that is running on, and is managing, theoriginal second data 207 and/or the revised second data 209 in theclient computer 204. By directly accessing the original second data 207,through use of executable logic within the message 214, the data change212 can be applied across multiple disparate platforms. For example, theoriginal second data 207 may be data that is managed/processed/used by aword processing application, a database management application, a videoprocessing application, etc., all of which are examples of residentapplication software that can be running on the client computer 204.However, the present invention is able to directly change the originalsecond data 207, regardless of what type of application software ismanaging/processing/using data from the original second data 207. Thus,the original second data 207 and/or revised second data 209 and/ororiginal first data 206 and/or revised first data 208 shown in FIG. 2can be adjusted and managed using any type of resident applicationsoftware (e.g., applications that manage, format, access, and otherwiseuse the data).

Note further that the data change 212, which is transmitted as part ofthe payload in the message 214, can be stored in a buffer, in adatabase, in a section of memory devoted to a particular applicationsoftware (e.g., a database management application, a word processingapplication, a spreadsheet application, a graphics application, etc.),in the content server 202 and/or in the client computer 204.

Note that in one embodiment, the original first data 206, revised firstdata 208, original second data 207, and revised second data 209 are allencrypted data, and thus the data change 212 is also encrypted. That is,assume that original first data 206 incurs the data change 212. When theclient computer 204 receives this data change 212 in the message 214,there is no need to first decrypt the data change 212 and the originalsecond data 207, such that a decrypted version of data change 212 isinserted into the now-decrypted original second data 207. Rather, theencrypted data (i.e., the encrypted data change 212) is simply inserteddirectly into the encrypted original second data 207 to create anencrypted revised second data 209.

With reference now to FIG. 3, a high-level flow chart of one or moreexemplary steps performed by one or more processors to minimizebandwidth usage when synchronizing data between two computers ispresented. After initiator block 302, an original server data (i.e.,original first data) in an original content server (i.e., a firstcomputer) is changed, by one or more processors, into revised serverdata (i.e., revised first data) in the first computer by inserting adata change into the original server data, as described in block 304. Inone embodiment, this data change is retrievable by the first computerfrom a data change server (e.g., data change server 154 shown in FIG.1). In this embodiment, different logic within the first computer may beisolated from one another such that the first computer is unable toidentify the data change. In this embodiment, then, a data revisiondeterminer (e.g., element 210 shown in FIG. 2) will compare the originalfirst data with the revised first data to identify 1) the data changeand 2) the location within the original first data where the change tothe data is made (block 306).

As described in block 308, one or more processors in the first computerthen transmits the data change to a client computer (i.e., a secondcomputer) in a message (e.g., element 214 in FIG. 2). This messageinstructs the second computer to convert an original client data (i.e.,an original second data) stored in the second computer into a revisedclient data (i.e., a revised second data) by inserting the data changeinto the original second data. In one embodiment, the message isexecutable by disparate types of data revision software on the secondcomputer. That is, regardless of what types of application and/oroperating systems (“data revision software”) are running on the secondcomputer, the message contains enough information for the operatingsystem on the client computer to execute the instructions in themessage. This process is performed by 1) determining a data changelocation in the original first data at which the data change is insertedto create the revised first data; and 2) transmitting the data changelocation to the second computer in the message, where the secondcomputer is enabled to calculate an equivalent data change location inthe original second data. That is, the data revision implementer 216 isable to calculate an equivalent location in the original second data 207at which the data change 212 was inserted in the original first data 206in FIG. 2, regardless of what types of files are stored in the first andsecond computers.

For example, assume that original first data 206 is a text file, andthat data change 212 is a text file, but original second data 207 is avideo file. Nonetheless, the data change 212 can still be inserted intothe video file as a text subroutine. The data revision determiner 210 isable to determine the context of the location in which the data change212 was inserted. For example, assume that the data change was insertedbetween text that describes a first scene in a video game and a secondscene in the video game. The data revision determiner 210 identifiesthis context, and generates a scene descriptor that a video program isable to interpret. The data revision implementer 216 is thus able toinsert this text file (data change 212) into the video file (originalsecond data 207), in order to create a revised second data 209 that is ahybrid text/video file.

Returning to FIG. 3, the process ends at terminator block 310.

With reference now to FIG. 4, an exemplary embodiment of the contentserver 202 shown in FIG. 2 is depicted as content server 402. As withthe content server 202 shown in FIG. 2, content server 402 is able tocommunicate with other computers via a network interface 430 (analogousto the network interface 130 shown in FIG. 1). Note that the sensors 126depicted in FIG. 1 are shown in greater detail in FIG. 4. That is, inone embodiment the sensors in the content server 402 are each dedicatedto observing a different type of phenomenon. For example, chemicalsensor 404 detects and identifies the presence of specific types ofchemicals; radiological sensor 406 detects and quantifies nuclearradiation energy; video sensor 408 is a still/motion camera thatmonitors visual phenomena; thermal sensor 410 is a digital thermometer,etc. Other types of sensors (generically represented as sensor 412)include, but are not limited to, motion sensors, accelerometers,salinity sensors, pressure (e.g., atmospheric) sensors, wind speed andhumidity sensors, etc.

Content server 402 may be part of any of multiple types of devices.Examples of such devices include, but are not limited to, airbornedevices (manned and unmanned airborne vehicles), balloons, spacesatellites, extraterrestrial rovers, ocean-based buoys, etc. In thisembodiment, each of the sensors depicted in FIG. 4 can independentlygenerate the data change 212 depicted in FIG. 2.

For example, assume that content server 402 is an airborne high-altitudeobservation vehicle, and that all of the sensors in FIG. 4 are detectingno change in their observations except for radiological sensor 406. Inthis case, radiological sensor 406 will autonomously generate a datachange 212 and send it to another computer via the network interface430. Thus, only the changed readings from radiological sensor 406 willmake up the data change 212.

In another exemplary embodiment, assume that content server 402 is aremote rover on an extraterrestrial body (i.e., a planet other thanEarth). Assume also that the video sensor 408 is generating a localvideo record (i.e., original first data 206 shown in FIG. 2), regardlessof whether the remote rover is moving or not or whether there is anyother change in the scenery. However, assume now that a moving object(e.g., an asteroid) strikes within the field of view of the video sensor408. There is now a data change in what the video sensor 408 isdetecting (i.e., the movement of the striking asteroid). In thisscenario, only the image of the striking asteroid is transmitted back toEarth, since local logic (e.g., by executing instructions from DSP 148shown in FIG. 1) will filter out the background scenery and transmitonly the moving asteroid as the data change 212.

Note further that the flowchart and block diagrams in the figuresillustrate the architecture, functionality, and operation of possibleimplementations of systems, methods and computer program productsaccording to various embodiments of the present invention. In thisregard, each block in the flowchart or block diagrams may represent amodule, segment, or portion of code, which comprises one or moreexecutable instructions for implementing the specified logicalfunction(s). It should also be noted that, in some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

Having thus described the invention of the present application in detailand by reference to preferred embodiments thereof, it will be apparentthat modifications and variations are possible without departing fromthe scope of the invention defined in the appended claims.

What is claimed is:
 1. A computer program product for synchronizing databetween a first computer and a second computer, the computer programproduct comprising: one or more computer-readable storage devices andprogram instructions stored on at least one of the one or morenon-transitory computer-readable storage devices, the programinstructions comprising: program instructions to change an originalfirst data in a first computer into a revised first data in the firstcomputer by inserting a data change into the original first data,wherein different logic within the first computer are isolated from oneanother such that the first computer is unable to identify the datachange, wherein the first computer comprises a video sensor thatgenerates a local video record of an environment of the first computer,wherein the data change is a result of a change to the local videorecord caused by a moving physical object that alters an appearance ofthe environment of the first computer; program instructions to identifythe data change in the revised first data; program instructions toreceive, by the first computer, an identification of the data changefrom a data change server, wherein the data change occurred within thefirst computer without the first computer being able to identify thedata change; program instructions to transmit the data change to asecond computer in a message, wherein the message instructs the secondcomputer to convert an original second data stored in the secondcomputer into a revised second data by inserting the data change intothe original second data, wherein the original first data is a textfile, wherein the original second data is a video file, wherein the textfile describes images in the video file, wherein the original seconddata and the revised second data are utilized by a resident applicationsoftware on the second computer, wherein the message contains allnecessary executable software that, when executed via an operatingsystem running on the second computer, causes an insertion of the datachange into the original second data, and wherein the message isexecutable without use of the resident application software on thesecond computer; program instructions to determine a data changelocation in the original first data at which the data change is insertedto create the revised first data; program instructions to identify afirst location in the text file that corresponds to a second location inthe video file based on related content from the text file and the videofile; and program instructions to transmit the data change location tothe second computer in the message, wherein the second computer isenabled to calculate an equivalent data change location in the originalsecond data, and wherein the data change is inserted into the video fileto create a hybrid text/video file that includes a text data change andthe video file; program instructions to receive, from the video sensor,the change to the local video record caused by the moving physicalobject; program instructions to filter out an image of a background ofthe environment of the first computer that does not include an image ofthe moving physical object; and program instructions to transmit, inresponse to detecting a physical event, only the data change showing theimage of the moving physical object without the image of the backgroundof the environment of the first computer.
 2. The computer programproduct of claim 1, wherein the message contains the data change withoutany other data from the revised first data.
 3. The computer programproduct of claim 1, wherein the data change is identified within thefirst computer by comparing the original first data to the revised firstdata.
 4. The computer program product of claim 1, wherein the firstcomputer is a content server and the second computer is a clientcomputer.
 5. The computer program product of claim 1, wherein theoriginal first data and the original second data utilize disparate typesof schemas.
 6. The computer program product of claim 1, wherein thefirst computer and the second computer utilize disparate types ofoperating systems.
 7. The computer program product of claim 1, whereinthe data change is generated by a specific sensor from a multi-sensorcontent server, wherein the specific sensor is dedicated to monitoring aparticular type of observable phenomenon, wherein the particular type ofobservable phenomenon is different from other types of phenomena thatare observed by other sensors in the multi-sensor content server,wherein the specific sensor is from a group of sensors consisting of achemical sensor, a radiological sensor, a video sensor, a thermalsensor, and a salinity sensor, and wherein the data change describesonly changes made to the particular type of observable phenomenon thatis observed by the specific sensor.
 8. The computer program product ofclaim 1, wherein the original first data and the original second datacontain output data from one or more sensors that detect environmentalstates of an environment of the first computer, and wherein the computerprogram product further comprises program instructions, stored on atleast one of the one or more computer-readable storage devices, to:receive, from the one or more sensors, data describing a change to theenvironmental states of the environment of the first computer; andincorporate the data describing the change to the environmental statesof the environment of the first computer into the original second datato generate the revised second data.
 9. The computer program product ofclaim 1, further comprising program instructions, stored on at least oneof the one or more computer-readable storage devices, to: store the datachange in a buffer, in the first computer, that is devoted to aparticular application software.
 10. A computer system for synchronizingdata between a first computer and a second computer, the computer systemcomprising: one or more processors, one or more computer-readablememories, one or more computer-readable storage devices, and programinstructions stored on at least one of the one or more computer-readablestorage devices for execution by at least one of the one or moreprocessors via at least one of the one or more computer-readablememories, the program instructions comprising: first programinstructions to change an original first data in a first computer into arevised first data in the first computer by inserting a data change intothe original first data, wherein different logic within the firstcomputer are isolated from one another such that the first computer isunable to identify the data change, wherein the first computer comprisesa video sensor that generates a local video record of an environment ofthe first computer, wherein the data change is a result of a change tothe local video record caused by a moving physical object that alters anappearance of the environment of the first computer; second programinstructions to identify the data change in the revised first data;third program instructions to receive, by the first computer, anidentification of the data change from a data change server, wherein thedata change occurred within the first computer without the firstcomputer being able to identify the data change; fourth programinstructions to transmit the data change to a second computer in amessage, wherein the message instructs the second computer to convert anoriginal second data stored in the second computer into a revised seconddata by inserting the data change into the original second data, whereinthe original first data is a text file, wherein the original second datais a video file, wherein the text file describes images in the videofile, wherein the original second data and the revised second data areutilized by a resident application software on the second computer,wherein the message contains all necessary executable software that,when executed via an operating system running on the second computer,causes an insertion of the data change into the original second data,and wherein the message is executable without use of the residentapplication software on the second computer; fifth program instructionsto determine a data change location in the original first data at whichthe data change is inserted to create the revised first data; sixthprogram instructions to identify a first location in the text file thatcorresponds to a second location in the video file based on relatedcontent from the text file and the video file; and seventh programinstructions to transmit the data change location to the second computerin the message, wherein the second computer is enabled to calculate anequivalent data change location in the original second data, and whereinthe data change is inserted into the video file to create a hybridtext/video file that includes a text data change and the video file;eighth program instructions to receive, from the video sensor, thechange to the local video record caused by the moving physical object;ninth program instructions to filter out an image of a background of theenvironment of the first computer that does not include an image of themoving physical object; and tenth program instructions to transmit, inresponse to detecting a physical event, only the data change showing theimage of the moving physical object without the image of the backgroundof the environment of the first computer.
 11. The computer system ofclaim 10, wherein the message contains the data change without any otherdata from the revised first data.
 12. The computer system of claim 10,wherein the data change is identified within the first computer bycomparing the original first data to the revised first data.
 13. Thecomputer system of claim 10, wherein the first computer is a contentserver and the second computer is a client computer.
 14. The computersystem of claim 10, wherein the data change is retrieved by the firstcomputer from a data change server.
 15. The computer system of claim 10,wherein the original first data and the original second data utilizedisparate types of schemas.
 16. The computer system of claim 10, whereinthe first computer and the second computer utilize disparate types ofoperating systems.